#include "process.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define NUM 101
#define STYLE '='
#define POINT '.'
#define SPACE ' '
const int pnum = 3;



// version 1
//void Process()
//{
//	const char * label = "|/-\\";
//	int len = strlen(label);
//	char bar[NUM];
//	memset(bar,'\0',sizeof(bar));
//	int cnt = 0;
//	while(cnt <= 100)
//	{
//		printf("[%-100s][%d%%][%c]\r",bar,cnt,label[cnt%len]);
//		fflush(stdout);
//		bar[cnt] = STYLE;
//		cnt++;
//		usleep(50000);
//	}
//	printf("\r\n");
//}




//version2 : 真实的进度条,应该根据具体的比如下载量,来动态刷新进度
void FlushProcess(double total,double current)
{
	//1. 更新当前进度的百分比
	double rate = (current / total) * 100;
	//printf("test: %.2lf%%\r",rate);
	//fflush(stdout);
	
	//2. 更新进度条主体
	char bar[NUM]; //一个1% 更新一个等号
	memset(bar,'\0',sizeof(bar));
	for(int i = 0;i < (int)rate; i++)
	{
		bar[i] = STYLE;
	}

	//3. 更新旋转光标或者其他风格
	static int num = 0;
	num++;
	num %= pnum; 

	char points[pnum + 1];
	for(int i = 0;i < pnum;i++)
	{
		points[i] = SPACE;
	}
	for(int i = 0;i <= num;i++)
	{
		points[i] = POINT;
	}

	//4.test && printf
	printf("[%-100s][%.1lf%%]%s\r",bar,rate,points);
	fflush(stdout);
}
